home *** CD-ROM | disk | FTP | other *** search
/ Aminet 50 / Aminet 50 (2002)(GTI - Schatztruhe)[!][Aug 2002].iso / Aminet / text / edit / tecoc-146.lha / changes.txt < prev    next >
Text File  |  1993-06-19  |  47KB  |  997 lines

  1.     This file contains release notes for TECOC.  The "base version"
  2. is 100 (reported by the EO command).  The version number starts at 100 to
  3. avoid confusion with TECO-11 version numbers,  which were close to 40 as of
  4. 01-Jan-1987.
  5.  
  6.  
  7. 10-Dec-1987 version 100
  8.  
  9. baseline version as of Fall Decus Symposium, Anaheim
  10.  
  11.  
  12. 04-Jan-1988 version 101        (mostly stuff for XENIX)
  13.  
  14. 1. created this file
  15. 2. changed EXEEO.C to make the version number 101.
  16. 3. changed FBFSIZ (file name size) to 20 in AMODEM.C
  17. 4. changed XAFTER.CSH to execute under CSH instead of SH
  18. 5. removed unused tags IFTag and OFTag from ZPORT.H
  19. 6. added comment about this file to AAAREADME.TXT
  20. 7. Created an updated XBUILD.CSH.
  21. 8. added a tab to INIT.C.
  22. 9. Added debugging code to PARSCL.C, MEMINI.C, ZINIFL.C, MUNG.C, ZREMBR.C,
  23.    and INIOPN.C.  This code is activated only if the variable DbgLvl is
  24.    initialized to 1 in DBGDSP.C.
  25. 10. Added semi-colon to line 181 of ZOPINP.C so it'll compile.
  26. 11. Changed ZREMBR.C so it returns NO in XENIX section.
  27. 12. Added code to set TrmTyp in XENIX section of ZTRMNL.C.
  28. 13. Changed SCRNOP.C so it tests TrmTyp (not OpCode) against UNTERM.
  29. 14. Added XENIX sections to ZDSPCH.C, ZDSPBF.C and ZCHIN.C.
  30.  
  31.  
  32. 23-Jan-1988 version 102
  33.  
  34. 1. changed EXEEO.C to make the version number 102.
  35. 2. changed the debugging code in ZABORT.C to avoid an infinite loop
  36. 3. removed "signal(SIGTERM, ZAbort)" from XENIX code in ZINIT.C
  37. 4. changed ZTRMNL.C to support control-Cs under XENIX
  38. 5. check for control-C in ZCHIN.C,  needed to do it in all other Z routines
  39. 6. added XENIX section to ZRDLIN.C
  40. 7. define sys$close in ZOPINP.C and ZOPOUT.C
  41. 8. define sys$get, sys$putmsg in ZRDEI.C
  42. 9. renamed/modified all the .CSH and .COM files so they start with "Z" and
  43.    updated AAAREADME.TXT to reflect the changes.
  44. 10. added file FALL87.RNO,  updated AAAREADME.TXT about it
  45. 11. fixed comment in RDLINE.C.
  46. 12. changed || to | in ZHELP.C so / immediate commands are okay under VMS.
  47. 13. fixed "invalid buffer size" bug for reading large files by changing
  48.     "65536" to "65535" in ZRDLIN.C.
  49. 14. fixed control-C handling,  so that type-out of a large buffer works.
  50.     Changed EXECST.C, ZDSPBF.C, FRSTCH.C, READCS.C.
  51. 15. added a test to EXECST.C so that commands like "<test$$" will
  52.     now produce "unterminated command" errors,  as they should
  53. 16. modified EXEEI.C to make EI$$ a null command to make CHANGE.TEC work
  54.  
  55.  
  56. 30-Jan-1988 version 103        ( to make CHANGE.TEC work )
  57.  
  58. 1. changed EXEEO.C to make the version number 103.
  59. 2. changed definition of Mung from DEFAULT to VOID in MUNG.C.
  60. 3. changed TmpEI from DEFAULT to VOID in TMPEI.C, ZINIFL.C, MUNG.C
  61. 4. removed superfluous "else" from ZSWILD.C
  62. 5. moved WFab, WNam initialization from ZINIFL.C to ZINIT.C
  63. 6. set WFab.fab$l_fna in ZINIT.C to make EN command work
  64. 7. added XENIX section to ZCPYBL.C
  65. 8. fixed XENIX section of ZICLOS.C
  66. 9. fixed XENIX section of ZOPOUT.C
  67. 10. fixed XENIX section of ZRDLIN.C
  68. 11. fixed XENIX section of ZWRITE.C
  69. 12. changed constants for XENIX in ZPORT.H
  70. 13. changed calloc to malloc in ZALLOC.C, merged similar sections
  71. 14. added debugging code to RDLINE.C
  72. 15. added debugging line to WRBUFR.C
  73. 16. fixed unlink call in ZOCLOS.C,  added debugging code
  74. 17. fixed unlink call in ZOCLDE.C
  75. 18. added -O switch to CC commands in XMKBLD.CSH (optimizes code)
  76.  
  77.  
  78. 31-Mar-1988 version 104
  79.  
  80. 1. changed EXEEO.C to make the version number 104.
  81. 2. changed the way code is compiled under XENIX:  deleted XMKBLD.CSH,
  82.    created ZXBLD.CSH and ZXDBLD.CSH,  modified ZXLOGIN.CSH and ZXCCC.CSH
  83. 3. fixed XENIX file creation mode in ZOPOUT.C
  84. 4. fixed XENIX section of ZMKOFN.C
  85. 5. fixed setting of CmdMod and EStTop in EXEEB.C
  86. 6. removed unnecessary call to ExeEY in INIOPN.C
  87. 7. fixed XENIX file renaming in ZOCLOS.C
  88. 8. used auto-decrement instead of addition in MEMINI.C
  89. 9. Renamed CHRFUNCS.H to CHRMACS.H.  All references to CHRFUNCS.H
  90.    had to be changed:  many files modified.  Also changed macros that
  91.    are in CHRMACS.H to use an array.  Merged that array with the one that
  92.    was in ReadCS.
  93. 10. made ZTrmnl define TrmTyp as UNTERM when we're running in a batch job.
  94. 11. took out "dying" message in GETNMA.C
  95. 12. fixed CR/LF appending in EXEEQU.C
  96. 13. fixed file output code in ZDSPCH.C
  97.  
  98.  
  99. 13-Apr-1988 version 105
  100.  
  101. 1. changed EXEEO.C to make the version number 105.
  102. 2. removed extra tab from ZINIT.C
  103. 3. renamed XAFTER.CSH to ZXAFTER.CSH
  104. 4. changed ZXAFTER.CSH so it renames CHRMACS.H,  not CHRFUNCS.H
  105. 5. added improved error reporting in ZOPINP.C
  106. 6. added "cc -c tecoc.c" to ZXBLD.CSH
  107. 7. added "/STANDARD=PORTABLE" qualifiers to CC commands in ZVBLD.COM
  108. 8. Fixed ZWrite to append LFs correctly under XENIX
  109. 9. Fixed ZChIn to make CR/LFs under XENIX out of LFs.
  110. 10. changed ZOpOut to use fopen instead of creat/fdopen.
  111. 11. overhauled error reporting.  Many modules changed, including all "Z" files.
  112.     Added OpnOut and ZErMsg.
  113. 12. Replaced GroEBf with InsStr to merge several copies of the same code
  114.     sequence.  Affected ExeBSl, ExeCtI, ExeG, ExeI, Replac.
  115. 13. Removed post-copy of memory after ZRaloc calls.  ZRaloc does it.
  116. 14. Took /STANDARD=PORTABLE off VMS compile commands to prevent warnings
  117.     about "globalref".
  118.  
  119.  
  120. 30-Jul-1988 version 106
  121.  
  122. 1. changed EXEEO.C to make the version number 106.
  123. 2. fixed some error reporting bugs.
  124. 3. check for mung mode failure in ExeCSt, not ErrMsg
  125. 4. changed EI buffer size to 20000 to let TSTSRC.TEC be input
  126.  
  127.  
  128. 06-Aug-1988 version 107
  129.  
  130. 1. changed EXEEO.C to make the version number 107.
  131. 2. fixed FR command.
  132. 3. fixed it so two control-C's terminate TECOC,  as it should be.
  133. 4. overhauled command-line parsing to make it use a TECO macro to do it,
  134.    like TECO-11 does.  Major changes to initialization code.  I did this to
  135.    provide the extra power and to make invocation of TECOC the same as TECO-11
  136.    under VAX/VMS.  Created ExeEG,  ZExeEJ, ZEgIni, ZEgLib, ZEgMem, ZEgSym
  137.    and ZEgVte.  Deleted ZIniFl, Mung, ZExeEG.
  138. 5. fixed ::S command.
  139. 6. fixed ] command's memory deallocation.
  140.  
  141.  
  142. 22-Feb-1989 version 108        ( porting to Turbo C )
  143.  
  144. 1. changed EXEEO.C to make the version number 108.
  145. 2. created function prototypes (without arguments) in DefTeco.h and removed
  146.    them from all other files.
  147. 3. changed /REPLACE to /INSERT in ZVBLD.COM
  148. 4. fixed definition of ErrTxt in BldStr.
  149. 5. moved "#include stsdef" into VAX section of ZErMsg.
  150. 6. moved expressions out of "if" statements to avoid compiler warnings in
  151.    FindQR, MakDBf, PshMac, StCopy, ZTrmnl.
  152. 7. Deleted reference to ZDefErr.h from ZOClDe.
  153. 8. deleted ZError.h
  154. 9. changed "ErrMag" to "ErrMsg" in ZOClos.
  155. 10. removed variables declared but never used in DoEI, ExeEG, WrBufr, ZOClos.
  156. 11. removed "return(xxx)" from XENIX section of ZHhelp,  which is a VOID
  157.     function.
  158. 12. Express 32768 in octal in DefTeco.h for ET_TRAP_CTRL_C to avoid problems
  159.     putting it into an unsigned EtFlag.
  160. 13. Added type-cast to ZCpyBl call in RdLine.
  161. 14. changed XENIX section of ZExeEJ so it defines ZExeEJ, not ZExCtH.
  162. 15. Replaced the Execut function with syntax for calling a function whose
  163.     address you have in a variable.
  164. 16. Made mods to make it run under Turbo C under MS-DOS.  Added __TURBOC__
  165.     sections to Zxxxx.c files and created ZPBLD.BAT and ZPDBLD.BAT.
  166. 19. Fixed Turbo C section in ZDspBf, ZDspCh, ZChIn, ZWrite.
  167. 20. Changed "LONG" to "ptrdiff_t" in several files.
  168. 21. Added Turbo C section to ZPrsCL.
  169.     Just to get it working,  commented out the Turbo C code in ZPrsCL.
  170.     This prevents the command-line macro from executing,  which avoids the
  171.     execution of EJ and EG commands in the macro.  EJ and EG are not yet
  172.     supported for non-VMS environments.  It now limps under Turbo C/MS-DOS
  173.  
  174.  
  175. 28-Feb-1989 version 109        ( more porting to Turbo C )
  176.  
  177. 1. changed EXEEO.C to make the version number 109.
  178. 2. made type conversions explicit via type casts in various functions.
  179. 3. replaced calls to ZChrIt with type-cast "(char)" and deleted ZChrIt
  180. 4. appended all the Dbgxxx functions to the end of TECOC.C and changed
  181.    compile/link so there is no separate debugging library.  This simplifies
  182.    the link sequence.
  183. 5. fixed VDOW.C and VSETW.C so setting DEBUGGING to NO will not cause
  184.    compilation errors.
  185. 6. changed references to .h files to lowercase so you don't have to
  186.    explicitly rename them after copying them from one machine to another
  187. 7. various minor changes so it will build for an UNKNOWN environment
  188. 8. use FILENAME_MAX,  an ANSI C identifier
  189. 9. changed the XENIX identifier to the more general __UNIX__ and restructured
  190.    the conditional compilation code to use "#elif".
  191. 10. replaced StCopy with strcpy
  192. 11. replaced ZCpyBl with MEMMOVE
  193. 12. created a file named MAKEFILE for use with Unix "make".
  194. 13. improved type definitions and casting to keep lint happy.
  195. 14. use EXIT_FAILURE and EXIT_SUCCESS in calls to exit() and ZAbort().
  196. 15. Defined return codes for the EJ command in systems other than VMS
  197.     so the command-line parsing macro could function.
  198. 16. Removed references to StCopy and ZCpyBl from ZPBLD.BAT and deleted
  199.     ZPLNK.BAT.  Fixed ZPLNK.BAT to not refer to DBGTECOC.LIB.
  200.  
  201.  
  202. 28-Feb-1989 version 110
  203.  
  204. 1. changed EXEEO.C to make the version number 110.
  205. 2. made the 2048 bit of the ET flag cause the BACKSPACE character to be
  206.    treated just like the DEL character on input.  This supports the
  207.    conventions used by IBM PCs and Unix.  On those systems,  you'll have
  208.    trouble getting a BACKSPACE into the command line,  a minor problem.
  209. 3. to simplify an effort to port TECO-C to RT-11, renamed the following
  210.    files so the name portion of the filespec is 6 characters or less.
  211.  
  212.         renamed CHRMACS.H      to CHMACS.H
  213.         renamed COMMANDS.TXT   to WCHART.TXT
  214.         renamed DEFCHARS.H     to DCHARS.H
  215.         renamed DEFSCREN.H     to DSCREN.H
  216.         renamed DEFTECO.H      to TECOC.H
  217.         renamed TEC0_V40.TEC   to TECV40.TEC
  218.         renamed TECO_V40.TES   to TECV40.TES
  219.  
  220.    The following files were not renamed,  and are the only remaining files
  221.    with names longer than 6 characters.
  222.  
  223.         AAAREADME.TXT       I just didn't want to rename this one
  224.         GETTECO.            used only on Unix systems
  225.         MAKEFILE.           used only on Unix systems
  226.         PROBLEMS.TXT        I just didn't want to rename this one
  227.         RELEASE.TXT         I just didn't want to rename this one
  228.         ZVLOGIN.COM         used only on VAX/VMS systems
  229.         ZXAFTER.CSH         used only on Xenix systems
  230.         ZXLOGIN.CSH         used only on Xenix systems
  231.  
  232. 4. Fixed ZPBLD.BAT: removed superfluous -I option, added ECHO statements so
  233.    you can tell how far it's gotten,  lowercased file names.
  234. 5. Removed definition of TraceM from ZExCtC, which doesn't use TraceM.
  235. 6. Don't return a value from ZDoCmd or ZHelp,  they're VOID functions.
  236. 7. Fixed Sun and Turbo C sections of ZExeEJ and ZClnEG.
  237. 8. Changed second argument of PushEx from BYTE to DEFAULT.
  238. 9. Made ZClnEG a LONG function to match it's use in ExeEG.
  239. 10. Made MakDBf calls in PushEx and GetNMA use a type cast when passing
  240.     EstTop and EstBot so it works under Turbo C.
  241. 12. Fixed expression syntax in CLPARS.TES.
  242. 13. Fixed handling of :ER commands in Turbo C section of ZOpInp.
  243. 14. Added function prototypes to tecoc.h.  They're conditionally compiled
  244.     based on the new USE_PROTOTYPES identifier defined in zport.h.
  245. 15. Replaced GENCLP.TEC with GENCLP.C.
  246.  
  247.  
  248. 11-Jun-1989 version 111
  249.  
  250. 1. changed EXEEO.C to make the version number 111.
  251. 2. More type-casts added to allow Turbo C to compile the code when the
  252.    function prototypes are used (USE_PROTOTYPE == YES).
  253. 3. Moved setting of EtFlag out of ZInit.c and into ZTrmnl.c.
  254.  
  255. 28-Jun-1989 version 112
  256.  
  257. 1. changed EXEEO.C to make the version number 112.
  258. 2. changed || to | in ZTrmnl.c to fix setting of EtFlag.
  259. 3. changed CrType to VT100 in ZTrmnl.c for IBM-PC so ANSI sequences are used.
  260. 4. rewrote logic to fix bugs and improve readability in InpDel.c.
  261. 5. renamed ScrnOp to ZScrOp so IBM-PC screen handling could be added.
  262. 6. replaced old usage of ET_BKSP_IS_DEL with new code in ZChIn.
  263. 7. added error message generation to ZChIn
  264. 8. fixed ZVBLD.COM so the link of GENCLP has LNK$LIBRARY defined
  265. 9. changed mktemp to tmpnam (ANSI) in ZOpOut.c.
  266. 10. merged VDoW, VGetW and VSetW into ExeW
  267. 11. Lots of little changes to reduce messages produced by lint and by
  268.     Turbo C when the -w switch (maximum warnings) is used.
  269.  
  270. 19-Jul-1989 version 113
  271.  
  272. 1. changed EXEEO.C to make the version number 113.
  273. 2. Fixed ZPBLD.BAT and ZPTLIB.BAT
  274. 3. Added code for IBM PC to ZScrOp.c
  275. 4. Added FFLINS,  used in InpDel and ReadCS.
  276. 5. Fixed comments in FindQR and tecoc
  277. 6. Changed ugly \015 to \r, \012 to \n, \011 to \t in all files
  278. 7. More type casting to reduce warnings from Turbo C.
  279. 8. Changed almost every file to insert new "charptr" and "QRptr" types.
  280.    These are needed to support the brain-damaged memory access on IBM-PCs,
  281.    where the pointers need to be "HUGE" to work.
  282. 9. fixed a bug in MakRom that caused :X commands (among others) to fail.
  283. 10. Converted QBfBeg, QBfPtr and QNumbr to the simpler QR
  284. 11. Rewrote GENCLP so it makes a file that Turbo C reads correctly.
  285. 12. Made a SIZE_T typedef to support Turbo C.
  286. 13. Used farmalloc in ZAlloc, farfree in ZFree and farrealloc in ZRaloc in
  287.     Turbo C sections.
  288. 14. made 0EJ return 0 for Turbo C.
  289. 15. Fixed ZWrite code for Turbo C.
  290.  
  291. 02-Aug-1989 version 114
  292.  
  293. 1. changed EXEEO.C to make the version number 114.
  294. 2. Renamed RELEASE.TXT to CHANGES.TXT
  295. 3. merged all the Z files into ZVMS,C, ZMSDOS.C, ZUNIX.C, ZUNKN.C
  296. 4. merged all the SKP files into SKPCMD.C
  297. 5. merged CHKHLP.C, FRSTCH.C and INPDEL.C into READCS.C
  298. 6. merged REDUCE.C into PUSHEX.C
  299. 7. merged MEMINI.C into INIT.C
  300. 8. merged DOEI.C into EXEEI.C
  301. 9. merged DOFBFC.C into SRCLOP.C
  302. 10. merged EXEE*.C files into EXEE.C (EXEEB.C is an exception)
  303. 11. merged EXEF*.C files into EXEF.C (EXEFB.C is an exception)
  304. 12. Implemented colon modifier on EW command.  This is an undocumented
  305.     feature required for the CLPARS macro to work on non-VAXen.
  306. 13. merged ZFILES.H into ZVMS.C, ZMSDOS.C, ZUNIX.C
  307. 14. fixed GENCLP.C yet again, for VMS
  308. 15. fixed memory shuffling bug in RDLINE.C
  309.  
  310. 21-Aug-1989 version 115 (Manfred Siemsen)
  311.  
  312. 1. Changed ExeEO() in EXEE.C to make the version number 115
  313. 2. Created DEFEXT.H, replaced all EXTERN lines with #include "defext.h"
  314. 3. Modified all #if DEBUGGING...#endif lines to call 3 debugging
  315.    functions:  DbgFEn() upon function entry, DbgFEx() upon function
  316.    exit, and DbgFMs() for messages in the body of a function.  Also,
  317.    indented the debugging lines so they line up under the code they
  318.    "belong" with, instead of being munched over on the left margin.
  319. 4. Modified debugging routines to use sprintf/printf to display
  320.    values of variables instead of displaying things "manually" through
  321.    other Teco-C build/display routines.  We still avoid the use of
  322.    sprint/printf in non-debugging code.
  323. 5. Modified the indentation scheme to more closely match K&R
  324. 6. Put squiggly braces '{}' around ALL statements, even if they
  325.    aren't required.
  326. 7. Modified the comment scheme to be consistent with Pete's
  327.    latest X-window'ish standard.
  328. 8. Created a Turbo C MAKEFILE (MAKEFILE.TC).
  329. 9. Began implementation of ZPWild() and ZSWild() in ZMSDOS.C.  It
  330.    seems to work ok, but there should be more error checking put in
  331.    to guard against the user entering a bizarre filename.
  332. 10 Implememted ZDoCmd() in ZMSDOS.C.  Required change to ExeEG() in
  333.    EXEE.C.  If it wasn't :EG, TxtLen was never set, might have been
  334.    garbage, moved TxtLen assignment out of "if (COLON..." statement.
  335.    Also, ZAbort() was called if TxtLen was not zero, should have
  336.    been called if TxtLen *is* zero.
  337.  
  338. 30-Aug-1989 version 116
  339.  
  340. 1. Changed ExeEO() in EXEE.C to make the version number 116
  341. 2. rearranged includes in "Z" files so that my .h files come after the
  342.    system ones.  This was needed so ZPORT.H can redefine FILENAME_MAX,
  343.    which on VMS is wrong (38 ain't right).  Rearranged ZPORT.H for the
  344.    same reason.
  345. 3. Replaced ERRMSG.C with ERR.C and created the new error reporting
  346.    functions ErrChr and ErrStr.  Doing this removes places where I was
  347.    writing into string literals,  which worked but wasn't real kosher.
  348.    It also makes lint happy about ErrMsg (fixed number of arguments now)
  349.    and modularizes the error code.  Merged DSPCHR.C and VRBERR.C into
  350.    ERR.C.
  351. 4. Created ZVrbos.
  352. 5. Fixed error message numbering.
  353. 6. Fixed prototype for ErrDsp and ErrPst in ERR.C.
  354. 7. Commented out illegal test case in TSTQR.TEC.
  355. 8. Made Charac a char instead of an int in ZChIn to fix bug.
  356.  
  357. 21-Oct-1989 version 117
  358.  
  359. 1. Changed ExeEO() in EXEE.C to make the version number 117
  360. 2. Moved #endif in TECOC.C from just after DbgSlv() to just after
  361.    DbgDsp() so DbgDsp() wasn't included when DEBUGGING is FALSE.
  362. 3. Updated MAKEFILE.TC.
  363. 4. Updated ZPTLIB.BAT.
  364. 6. Changed prototype of ZVrbos in ZMSDOS.C, ZVMS.C, ZUNIX.C,
  365.    ZUNKN.C, and TECOC.H.
  366. 7. Changed DoEI() comment in EXEE.C.
  367. 8. Made ZRdEI() call ZRdLin() instead of calling fgets() directly.
  368. 9. Changed ZWrite() to ZWrLin(), it's more descriptive.
  369.  
  370. 23-Oct-1989 version 118
  371.  
  372. 1. Changed ExeEO() in EXEE.C to make the version number 118
  373. 2. minor fixes to make lint happy
  374. 3. Changed ZChIn() in ZMSDOS.C to ignore any IBM PC scan code
  375.    other than DEL to eliminate the "Unrecognized character" bomb.
  376. 4. Changed CLPARS.TES so filespec memory works on PC's.
  377. 5. Changed EXEQ.C to fix numeric expression parsing
  378. 6. Change definition of FEArry[] from (*F[])() to (*F[])(VOID)
  379.    to eliminate Turboc C "function w/no prototype" warning.
  380.  
  381. 03-Nov-1989 version 119 (Manfred)
  382.  
  383. 1. Changed ExeEO() in EXEE.C to make the version number 119.
  384.  
  385. 2. Because of some bizzare behaviour, the CHECKSUM_CODE #define and routines
  386.    were added to check code at runtime to make sure it wasn't being
  387.    overwritten.  These routines read the Turbo C .MAP file to get the order
  388.    and length of all the modules, calculates and stores an initial checksum
  389.    for each module; and then compares the initial checksum of each module
  390.    with the checksum calculated after every command is executed in ExeCSt().
  391.  
  392. 3. Changed ZAlloc(), ZRaloc(), and ZFree() to return and expect a new
  393.    type "voidptr" instead of charptr's.  I then removed the casts before
  394.    ZAlloc() and ZRaloc() returns in the code.  Borland Turbo C says that
  395.    explictly casting returns from malloc/realloc hides things from the
  396.    compiler and is bad practice in ANSI C.
  397.  
  398. 4. Changed "struct QReg *LQTabl" to "QRptr LQTabl" in the definition of
  399.    MStck in TECOC.H per phone call w/Pete.
  400.  
  401. 5. Changed an incorrect call to DbgFEn() in ZOpOut()...should have displayed
  402.    DbgSBf instead of "".
  403.  
  404. 6. Changed the DbgFEn(), DbgFEx(), and DbgFMs() calls to send NULL instead
  405.    of "" if there is no special debugging message to display.  This saves
  406.    space when Turbo C is not merging duplicate strings (tcc -d).  Otherwise
  407.    there are billions of "" strings in the .EXE file ("" strings take 1
  408.    byte of space because they contain a '\0').  I used CHANGE.TEC to do it!
  409.  
  410. 7. Changed ZRaloc() in ZMSDOS.C to manually reallocate blocks.  There is a
  411.    problem with Turbo C's farrealloc() in that it uses movedata() to move
  412.    data from the old block to the new block.  Movedata() expects a size_t
  413.    as the number of bytes to move.  size_t under Turbo C v2 is *always* a
  414.    16-bit unsigned int regardless of memory model.  This means that if the
  415.    old block is >64K, movedata() won't move the data correctly from the old
  416.    block to the new block when the old block is >64K.
  417.  
  418. 8. Implemented the ^B system date (ZExCtB) and ^H system time (ZExCtH)
  419.    routines in ZMSDOS.C using DOS calls.  EIDATE.TES$ will display the
  420.    current date and time.
  421.  
  422. 9. Initialized ff_status in ZMSDOS.C to -1 so EN$$ with no preceding
  423.    ENfilename$$ doesn't blow up by calling findnext() with no initial
  424.    findfirst().  Is <File Not Found ""> a reasonable return?
  425.  
  426. 10.Changed ExeRBr() so that End_P1 is set to NULL when Start is set to
  427.    NULL after the ZFree(QR->Start).  Otherwise, End_P1 might not be NULL
  428.    and will cause problems for those routines which blindly subtract
  429.    End_P1 from Start to get the length of text in the Q-register.
  430.  
  431. 11.Changed the line in ^EQq logic part of BldStr() where QR->End_P1 was
  432.    being subtracted from QR-Start, when it should be the other way around.
  433.  
  434. 12.Changed FArray[] in ExeCSt().  The ^Q entry was ExeNYI(), it should have
  435.    been ExeCtQ().  The ^_ entry was ExeOpr(), it should have been ExeUsc().
  436.    Actually, both ExeOpr() and ExeUsc() would have pushed ^_ on the stack,
  437.    so it was a...uh...push.
  438.  
  439. 13.Changed ^G entry FCAray[] in ExeCrt() from ExeNul() to ExeIll() so it
  440.    jibes with FArray[] in ExeCSt() entry.
  441.  
  442. 14.The logic in ReadEI() in EXEE.C determining whether or not to add a
  443.    trailing CR-LF to the line read from the EI file was wrong.  ReadEI()
  444.    now calls ZRdlin() to read lines from the EI file.  ZRdLin() returns
  445.    the length of the read line *without* the trailing newline returned by
  446.    fgets().  The ReadEI() logic was checking if the line ended in VT or
  447.    in ESC-CR-LF.  Since the line returned by ZRdLin() should never end in
  448.    CR-LF, the ESC check was bogus. I changed it to only add a CR-LF if
  449.    the line did NOT end in VT or ESC which I think was the original intent.
  450.  
  451. 15.While playing with ReadEI() in EXEE.C, I was having problems reading in
  452.    a huge macro (>ZBFINIT bytes long).  The problem was that if the EI
  453.    buffer became full (ie: BufPtr == ZBfEnd), ReadEI() was calling
  454.    ZRdLin() with (ZBfEnd-BufPtr == 0).  ZRdLin() was in turn essentially
  455.    calling "fgets(buf,0,fp)".  When told to read into a 0 size buffer,
  456.    fgets() simply returns the buffer.  ZRdLin() only fails if fgets()
  457.    returned NULL or if an error happened, otherwise it will happily
  458.    return 0 as the length of the line it read, therefore, back in
  459.    ReadEI(), the "BufPtr += line_len" never incremented BufPtr
  460.    anywhere and ReadEI() never broke out of it's FOREVER loop, it
  461.    looped infinitely, reading zero bytes into a zero length buffer.
  462.  
  463.    I added the ZBFMIN and ZBFEXP #defines in ZPORT.H and changed ReadEI()
  464.    so it dynamically reallocates the EI buffer when it is close to
  465.    becoming full.
  466.  
  467. 16.Changed ExeCtu(). The call to MakRom() used to make the Q-register
  468.    text area 1 character longer when doing a "n^Qq" was sending the wrong
  469.    argument.  It was sending the new *total* size of the text area
  470.    (end-start+1) instead of the *additional* size of the text area (1 byte).
  471.  
  472. 17.Changed the way the CLPARS macro is handled:
  473.  
  474.    a)  If USE_ANSI_CLPARS is FALSE.
  475.  
  476.    Changed CLPARS.TES to not clear itself out of memory when it was
  477.    finished.  The CLPARS macro is loaded and executed in Q-register Y.
  478.    The last thing it did was a "0,0XY" to clear itself out.  The problem
  479.    is that ExeX() would call ZFree() to clear Q-register Y, leaving
  480.    CBfPtr effectively pointing into a free'ed memory area.  This wasn't
  481.    fatal because the "0,0XY" was the very last thing in the CLPARS macro
  482.    so no further TECO instructions were looked for in the free'ed area;
  483.    but, technically it was wrong.  I removed the "0,0XY" from the CLPARS
  484.    macro and changed ZPrsCl() so it manually ZFree()'s Q-register Y after
  485.    it finishes executing it.
  486.  
  487.    Note: SQU also uses this technique: issuing a '0,0Xq' at the tail end of
  488.    a macro loaded in Q-register 'q' to clear the macro out after it
  489.    finishes executing.  If this is a common TECO macro practice, maybe
  490.    we'll have to think this through a little more.
  491.  
  492.    b) If USE_ANSI_CLPARS is TRUE
  493.  
  494.    If USE_ANSI_CLPARS is true, the CLPARS macro is stored as one
  495.    gigantic string in clpars[].  If USE_ANSI_CLPARS is false, the
  496.    CLPARS macro is split into lines and stored as an array of strings
  497.    in *clpars[].  The advantage to USE_ANSI_CLPARS is that to execute
  498.    the CLPARS macro, ZPrsCL() simply made the text area pointers of
  499.    Q-register Y point at clpars[] to "load" Q-register Y before doing
  500.    the MY$$.  Otherwise, if USE_ANSI_CLPARS is false, the CLPARS
  501.    macro is executed by (slowly) loading it from *clpars[], line-by-line,
  502.    into Q-register Y and then doing the "MY$$".
  503.  
  504.    The problem was that if USE_ANSI_CLPARS was true, Q-register Y held
  505.    statically allocated data which could cause problems when the CLPARS
  506.    macro did the "0,0XY" to clean up.  "0,0XY" would make ExeX() try to
  507.    ZFree() the statically allocated clpars[] string.
  508.  
  509.    While looking at this problem I noticed that, other than for historical
  510.    reasons, there is no reason the CLPARS macro *has* to be executed from
  511.    Q-register Y.  I changed ZPrsCL() so that if USE_ANSI_CLPRS is true, it
  512.    directly executes the CLPARS macro from the clpars[] string without
  513.    bothering to load it into Q-register Y first.
  514.  
  515. 18.Removed TRACE_IMBEDDED_MACRO.
  516.  
  517. 19.Removed static initialization of QRgstr[] in TECOC.C and moved it
  518.    into MemIni() in INIT.C along with the other initializations of
  519.    global static arrays (QStack[], etc). [See suggestion (1) below]
  520.  
  521. 20.Changed ExeEO to return ExeNYI() for "nEO".
  522.  
  523. 21.Changed DoEI().  DoEI() calls PshMac(), ExeCSt(), and PopMac().  If the
  524.    ExeCSt() failed, it would do a return(FAILURE) without doing the PopMac(),
  525.    leaving the macro stack off and CBfPtr pointing into the EI buffer.  DoEI()
  526.    was changed so that it does a PopMac() even if ExeCSt() fails.  This same
  527.    type of logic was changed in ExeM().
  528.  
  529.    This problem didn't appear unless you tried executing a macro from a file
  530.    or from a Q-register which failed miserably.
  531.  
  532. 22.Changed ReadEI() <again>.  When ReadEI() finds a line containing double
  533.    <ESC>'s, it returns to DoEI(), which then executes everything up to that
  534.    point.  DoEI() then re-calls ReadEI() to finish reading the EI file.  The
  535.    problem was that if there were any commands *after* the two <ESC>'s on
  536.    the last line read, they would be lost in the shuffle because ReadEI()
  537.    would start reading into the beginning of ZBf.  The SQU.TEC macro had
  538.    a line with commands after a double <ESC>.
  539.  
  540. 23.Fixed ExeO().  ExeO() wasn't completely comparing the desired tag with
  541.    the tag in the command string.  So, if the command string had two tag
  542.    names which start out the same way, for example:
  543.  
  544.     !aa!
  545.     !a!
  546.  
  547.    "Oa" would goto !aa!.
  548.  
  549. 24.Changed the way some of the colon-modified commands work.  I ran into a
  550.    situation in SQU where "Y<:A;>" was used.  If the yank read in the entire
  551.    buffer, ExeA() would fail immediately, without clearing the colon-modified
  552.    bit in CmdMod, thus "passing" CmdMod to ";" converting it to ":;".  "n;"
  553.    breaks if n is zero or positive, "n:;" breaks if n is negative.  "Passing"
  554.    CmdMod to ExeSCl() this way completely altered the sense of the ";" break.
  555.  
  556. 25.Fixed case flagging in TypBuf() and made it faster by not doing the
  557.    Is_Lower() and Is_Upper() checking if EuFlag() is set to EU_NONE.
  558.  
  559. 26.Rewrote ZCpyBl() in ZMSDOS.C to use memmove() and memcpy().  They
  560.    both use 80x86 string instructions and make things much faster.
  561.  
  562. 27.PopMac() was clearing the contents of the local Q-register table,
  563.    but wasn't de-allocating the table itself.
  564.  
  565. 28.Changed PshMac(), PopMac(), FindQR(), and Init() to use pointers into
  566.    the MStack[] and MStack[].QRgstr tables instead of doing redundant array
  567.    references.  Changed Reduce() in PUSHEX.C to use pointers into EStack[]
  568.    for the same reason.  Using pointers should be faster?
  569.  
  570. 29.The digit buffer (DBfBeg) was initialized in TECOC.C as:
  571.  
  572.         charptr *DBfBeg = "      ";
  573.  
  574.    then digits were poked into this statically allocated string which really
  575.    isn't kosher.  Changed it so DBfBeg is initialized in MemIni() in INIT.C.
  576.  
  577.  
  578. 06-Dec-1989 version 120
  579.  
  580. 1. Changed ExeEO() in EXEE.C to make the version number 120.
  581. 2. Fixed bug in ZDspBf caused by "length" wrapping when unsigned.
  582. 3. various little fixups.
  583.  
  584.  
  585. 07-Dec-1989 version 121
  586.  
  587. 1. Changed ExeEO() in EXEE.C to make the version number 121.
  588. 2. Made EC clear the edit buffer after writing files.  Thanks, Phil.
  589. 3. Fixed ZFWrite in ZMSDOS.C to handle files > 64k better.
  590.  
  591.  
  592. 20-Dec-1989 version 122
  593.  
  594. 1. Changed ExeEO() in EXEE.C to make the version number 122.
  595. 2. Added TVERSION (version number of TECOC-C) to TECOC.C
  596. 3. Fixed ZRdLin in ZVMS.C to make EI commands work.
  597. 4. Removed the ZInit function.  It was being called late (after MemIni),
  598.    and turned out to be unused anyway.
  599.  
  600.  
  601. 04-Feb-1990 version 123
  602.  
  603. 1. Changed ExeEO() in EXEE.C to make the version number 123.
  604. 2. Removed funny handling of lines terminated with <ESC><CR><LF> do let
  605.    MS-DOS users edit macros without funnyness.
  606. 3. Regularized the "debugging level" numbers documented with DbgDMs in
  607.    TECOC.C.
  608. 4. Fixed looping logic in SrcLop to make "n_text$" commands work.
  609. 5. Fixed bug in ClTrEx in ZVMS.C so running from batch works.
  610.  
  611.  
  612. 20-Feb-1990 version 124
  613.  
  614. 1. Changed TVERSION in TECOC.H to 124.
  615. 2. Rewrote MakDBf to make it more portable.
  616.  
  617.  
  618. 2-Mar-1990 version 125
  619.  
  620. 1. Changed TVERSION in TECOC.H to 125.
  621. 2. Fixed so HP with an empty buffer doesn't cause an error message.
  622. 3. Moved the decision about whether to add/remove CR/LF pairs to/from the end
  623.    of lines when doing file I/O into the system-dependent functions.  This
  624.    was needed to make MD-DOS happy,  and is really where this stuff should
  625.    be anyway.
  626. 4. Defined GotCtC as "volatile".
  627. 5. Rewrote ZRdLin in ZVMS.C to do what TECO-11 really does with all the
  628.    special characters.
  629. 6. Put a check for an open output file into ExeEC,  so the command HKEFEX
  630.    will work even if there's more pages in the input file.
  631. 7. Merged WrBufr and ZWrLin into a singl function called ZWrBfr.  Deleted
  632.    WRBUFR.C and updated the build files.  This was needed to provide system
  633.    dependent control over output so MS-DOS I/O could be cleaned up.
  634.  
  635.  
  636. 22-May-1990     version 126
  637.  
  638. 1. Changed TVERSION in TECOC.H to 126.
  639. 2. Removed code that adds a CR/LF to each record read by ReadEI.
  640. 3. Fixed VMS output code in ZWrBfr broken in version 125.
  641. 4. Changed TypBuf so it is interruptable by ^C after displaying a line.
  642. 5. Defined ChkCtC() so that ^C's work better under MS-DOS.
  643. 6. Changed ZSWild & ZPWild to work better under CHANGE.TEC.
  644. 7. Folded wildcard filename buffer (WBf) into "normal" filename buffer (FBf)
  645.    so G* after ENfilespec$ returns "filespec".
  646.  
  647.  
  648. 1-June-1990 version 127
  649.  
  650. 1. Changed TVERSION in TECOC.H to 127.
  651. 2. Modified ZDoCmd() in ZMSDOS.C so you can EGfilename.BAT$.
  652. 3. Added EBfFul to avoid "?MEM memory overflow" messages when reading large
  653.    files.  Now TECO-C quietly stops reading.
  654. 4. Reduced number of times ChkCtC() is called to speed display up.
  655. 5. renamed AAAREADME.TXT to AAREADME.TXT,  needed by MS-DOS
  656.  
  657.  
  658. 8-June-1990 version 128
  659.  
  660. 1. Changed TVERSION in TECOC.H to 128.
  661. 2. Fixed loops that initialize IsOpnI, IsEofI and IsOpnO in Memini.  Thanks
  662.    to Chuck Cranor.
  663. 3. Added ZExit, ZClnUp and ClenUp and replaced ZAbort with TAbort.  This
  664.    modularizes exit handling.
  665. 4. Applied lots of fixes to zunix.c suggested by Chuck Cranor.  These include
  666.    terminal initialization and use of termcap for terminal sequences.
  667. 5. Added a type cast to FindQR to prevent a compiler warning.
  668.  
  669.  
  670. 13-June-1990    version 129
  671.  
  672. 1. Changed TVERSION in TECOC.H to 129.
  673. 2. Made n^T display n modulo 256 instead of generating an error when n
  674.    is out-of-range.  Now it matches documentation.
  675. 3. Worked on file I/O in ZUNIX.C.
  676.  
  677.  
  678. 20-June-1990 version 130
  679.  
  680. 1. Changed TVERSION in TECOC.H to 130.
  681. 2. Applied Tom Almy's MS-DOS fixes to prevent conversions of line feeds
  682.    written to the terminal to carriage-return/line-feed pairs.
  683. 3. Applied Tom Almy's fixes to the search code.  Now backwards searches
  684.    work better.
  685. 4. Applied Tom Almy's fixes so eight-bit characters are better supported.
  686. 5. Minor fixes to ExeW.
  687. 6. Replaced ZRdLin in ZMSDOS.C with Tom Almy's superior version.
  688. 7. EBfFul was a global used only by RdLine, ExeA and RdPage.  I made it
  689.    an argument.  Seemed like the right thing to do.
  690. 8. Changed the type of the length argument to InsStr from LONG to ptrdiff_t.
  691. 9. Applied Tom Almy's fixes to DoEvEs and ReadCS.
  692. 10. Fixed up PG.RNO and created a new PG.MEM.
  693. 11. Removed BYTE identifier from ZPORT.H and did related fixups.
  694. 12. Started (by no means complete) supporting 8-bit characters throughout
  695.     the code.  In most cases,  this means changing things declared "char"
  696.     to be declared "unsigned char".
  697. 13. Deleted DSPCHR.C, which wasn't even compiled.
  698.  
  699.  
  700. 17-July-1990 version 131 (Manfred)
  701.  
  702. 0. Changed TVERSION in TECOC.H to 131
  703. 1. In TECOC.C, ChrMsk[], changed 128 RCS_DEL entries Pete added to RCS_DEF.
  704. 2. In ZMSDOS.C, added #include <fcntl.h> to get O_BINARY #define.  In
  705.    ZTrmnl(), added "setmode(fileno(stdout),O_BINARY)" per Tom Almy.
  706. 3. In MAKEFILE.TC, added -K (default to unsigned char) to TCC so string
  707.    literals which are signed char ptr's don't conflict with the unsigned
  708.    char ptr's now used all over to get eight-bit chars per Tom Almy.
  709.    Also added tabort.obj to TECOC_OBJS macro.  Also added -DTCPP100 macro.
  710. 4. In ZPORT.H, changed EBFEXP, EBFINIT, IBFEXP, IBFINIT from 64000
  711.    to 64000L to get rid of TC++'s "Constant is long" warnings.
  712. 5. In ERR.C, ToErr(), got rid of TC++'s "Conversion may lose significant
  713.    digits" in Sbuf[DBfPtr-DBfBeg] line by using SLen to hold DBf length;
  714.    changed bogus compare "> '\126'" to "> '\177'"; also, the final ']'
  715.    was overwriting last digit in SBuf.
  716. 6. In RDLINE.C, changed function return type of expand_ibf from an
  717.    "static" to "static void".  Also added prototype.
  718. 7. In TECOC.H, added prototype for errprt().
  719. 8. In RDLINE.C, expand_ibf(), added #if DEBUGGING lines so DbgFNm is declared.
  720. 9. In ZMSDOS.C, ZRdLin(), fixed typo in #if DEBUGGING "FAILURE" section.
  721. 10. In ZMSDOS.C, ZRaloc(), added test for TC++ v1.00 since the heap layout
  722.     has changed.  In TC v2.0? mimic farrealloc(), in TC++ v1.00 call
  723.     farrealloc() directly.
  724.  
  725.  
  726. 18-July-1990 version 132
  727.  
  728. 0. Changed TVERSION in TECOC.H to 132
  729. 1. lots more work to resolve type mismatches,  so lint and gcc don't
  730.    complain so much.
  731. 2. fixed the ? immediate-mode command.
  732. 3. used GAPMIN in RdLine to fix wasteful memory use.
  733. 4. removed superflous parentheses from return statements.
  734. 5. to test that identifiers defined in ZPORT.H are minimally consistent,
  735.    added some tests in TECOC.C
  736. 6. To finish up eightbit handling,  added ZSetTT,  a function to let TECO set
  737.    terminal characteristics.  Since it's there,  added code so the 1:W and
  738.    2:W commands change screen size.  Not video yet,  but a little closer.
  739. 7. Changed ZMkOFN into a macro named ZMKOFN.
  740. 8. Fixed ZChIn to handle NoWait correctly.
  741. 9. Fixed handling of 0,32et bit.
  742.  
  743.     (8-August-1990 Manfred)
  744.  
  745. 10. In TECOC.C, changed "\n" to "\r\n" in debugging displays since stdout
  746.     is now in binary mode.
  747. 11. In INIT.C, in MemIni(), added Tom Almy's suggestion to temporarily
  748.     allocate a small chunk of memory to be used as a small-allocation
  749.     memory pool which may help keep memory fragmentation down.
  750. 12. In ZPORT.H, removed unused UWORD typedef.
  751. 13. In ZMSDOS.C, in ZVrBos(), changed old style function definition.
  752. 14. In ZMSDOS.C, propagated MPtrs[] dynamic allocation tracking to ZRaloc(),
  753.     added TC++'s new heapcheck() routines to check the heap on every alloc,
  754.     realloc, and free.  We *are* DEBUGGING and don't care about speed
  755.     penalties, right?
  756. 15. In ERR.C, the one-line error messages for ERR_PES and ERR_PDO were
  757.     switched (Argh!).
  758. 16. In ZPORT.H, expanded EXS_SIZE, LPS_SIZE, MCS_SIZE, and QRS_SIZE so
  759.     SQU.TEC has some breathing room.  Should these expand themselves?
  760. 17. Some of the .TEC and .TES files supplied with TECO-C were padded with
  761.     NUL's and some lines ending with ESC had an extra CR.
  762. 18. In ZMSDOS.C, ZDspCH() called write().  should call fwrite() or we're
  763.     mixing calls to write/fwrite on stdout which is bad.  also, the code
  764.     which directly set stdout->flags'_F_BIN bit after setmode(stdout) in
  765.     ZTrmnl() somehow was lost between Pete's version and mine (?)
  766. 19. In ZMSDOS.C, in ZRdLin(), iBuf was cast as "char far *", should have
  767.     been cast simply as a "char *" otherwise compiling w/small data model
  768.     doesn't work.
  769. 20. In CHANGE.TES, changed some ^U constructs so it's now SQUishable.
  770. 21. In ZMSDOS.C, added ff_path[] to save ENfilespec$ wildcard lookup
  771.     filename since we can't be sure FBf will still contain the wildcard
  772.     lookup filename between ENfilespec$ and EN$.
  773. 22. Changed CLPARS.TES so when you MUNG there's no leftover trash in
  774.     q-register 0. (Pete)
  775.  
  776.  
  777. 19-August-1990 version 133 (Manfred)
  778.  
  779. 0. Changed TVERSION in TECOC.H to 133
  780. 1. In EXEO.C, added support for computed gotos (nOtag0,tag1...$)
  781. 2. In INIT.C, in MemIni(), the digit buffer was being overrun on -1== since
  782.    the calculation to allocate the digit buffer either: a) didn't take into
  783.    account that 32-bits-per-long/3-bits-per-octal-digit doesn't divide evenly
  784.    (loses 2 bits), or b) didn't take into account that ExeEqu() might append
  785.    <CR><LF> to the digit buffer for =, ==, or === display purposes.
  786. 3. In ZMSDOS.C, fixed MPtrs[] tracking in ZRaloc, didn't work correctly
  787.    when farrealloc() eventually returns NULL.
  788. 4. In TECOC.C, added Turbo C's heapcheck() routine to check_consistency().
  789. 5. In RDLINE.C, in RdLine(), after expand_ibf(), was calling ZRdLin() even
  790.    if EBfFul was set TRUE.  I don't think it should, even though we might be
  791.    able to read a line less than IBFMIN bytes long.
  792.  
  793.  
  794. 9-September-1990 version 134 (Pete)
  795.  
  796. 0. Changed TVERSION in TECOC.H to 134
  797. 1. Changed the way I handle conditional inclusion of debugging code.
  798.    Borrowing from the way the ANSI assert macro works,  all the debugging
  799.    functions are now macros,  which don't produce any code if DEBUGGING
  800.    is FALSE.
  801. 2. Added TECOC.OPT so the VAX linker puts literal text strings into a
  802.    non-writeable PSECT.
  803. 3. Fixed ExeBSl so it will read a numeric string from the edit buffer even
  804.    if it's preceded by a minus-sign or plus-sign,  and fixed TSTBSL.TEC
  805.    so it tests for these cases.
  806.  
  807.  
  808. 18-October-1990 version 135 (Pete)
  809.  
  810. 0. Changed TVERSION in TECOC.H to 135.
  811. 1. Updated PG.RNH/PG.MEM again.
  812. 2. Fixed define of DBGFEX in TECOC.H so DEBUGGING works again.
  813. 3. Fixed FindQR and ExeM to make TECO-C handle :M commands correctly.
  814.  
  815.  
  816. 21-November-1990 version 136
  817.  
  818. 0. Changed TVERSION in TECOC.H to 136.
  819. 1. Fixed DBGFEX syntax bug on line 1118 of ZMSDOS.C
  820. 2. Removed extra close parenthesis in EXEW.C
  821. 3. Fixed BLDSTR.C to allow searching for nulls.  Thanks to Tom Almy.
  822. 4. Fixed ExeFGt to work correctly.  Bug found by Richard Graham.
  823. 5. Added missing enblosing braces in InsStr. Thanks to Mark Henderson.
  824. 6. Added Mark Henderson's additional code to BldStr to provide ^EQ* (file
  825.    spec buffer) and ^EQ_ (search string buffer) support.  Then broke BldStr
  826.    into functions for readability.
  827. 7. Inserted Mark Henderson's time and date code into ZUNIX.C.  Testing with
  828.    DATE.TEC revealed a slight bug,  fixed.
  829. 8. Added ZAMIGA.C and some mods to ZPORT.H from Ben Mesander to support
  830.    TECO-C under Amiga-DOS.  Thanks Ben!
  831. 9. Fixed ExeEQ so it preserves the state of FFPage when reading files.
  832.    Thanks to Mark Henderson.
  833. 10. Added ZBell function to make the bell sound better under MS-DOS.
  834.    Thanks to Steve Freyder.
  835. 11. Added Mark Henderson's code (he got glob.c from Berkeley stuff)
  836.    to do wild-carding of file names.  Reorganized it some.  Thanks, Mark.
  837. 12. Added Mark's code to name backup files sort of like VMS.  Not sure I
  838.    like this yet,  because I haven't tried it.  ED bit 4 controls it,  like
  839.    so (from Mark:)
  840.     ED&4 now specifies the mechanism for backup files
  841.     if ED&4 is set then we use the foo foo.bak mechanism (as originally)
  842.     if ED&4 is clear the first backup file will be named foo;1, the
  843.         second foo;2, ...&c. Sort of VMS like, but the most recent
  844.         version will be known by the name foo.
  845. 13. Mark added TECFILES environment variable.
  846.     If for ei commands and TECO.INI the file is not found in the
  847.     current directory the directory $(TECFILES) will be searched.
  848.     I've been keeping my teco startup files in ~/.teco
  849.  
  850.  
  851. 26-December-1990 version 137
  852.  
  853. 0. Changed TVERSION in TECOC.H to 137.
  854. 1. Minor fixups to get ZUNIX.C to compile.
  855. 2. Moved the line that resets FFPage to zero.  It was in RdPage,  now it's
  856.    in RdLine so a 1:a command now correctly resets flag.  Thanks to Richard
  857.    Graham for reporting this one.
  858. 3. Modified ExeCtE so you can now set the flag as well as get its value,
  859.    like in TECO-11 and TECO-32.
  860. 4. Fixed ExeBSl so it sets RefLen when it converts a digit string in the
  861.    edit buffer into a binary value.  Thanks to Mark Henderson.
  862. 5. Merged in new Amiga support files from Ben Mesander.  There's a new
  863.    ZAMIGA.C, which now has time and date support.  Ben supplied files
  864.    MAKEFILE.AMI and TECOC.LNK for building on the Amiga.
  865.  
  866.  
  867. 29-December-1990 version 138
  868.  
  869. 0. Changed TVERSION in TECOC.H to 138.
  870. 1. Rewrote the TSTO.TEC macro,  which pointed out a bug in TECO-32!
  871. 2. Added "smallcode smalldata" to LFLAGS vlue in MAKEFILE.AMI to make TECO-C
  872.    smaller (for faster startup) under AmigaDOS. Thanks to Ben Mesander.
  873. 3. Moved OpnInp and OpnOut into ExeE because only ExeE functions call them.
  874. 4. Changed ZOpInp function in ZVMS to do the right thing with the default
  875.    macro library directory.  ZAMIGA.C, ZUNIX.C and ZMSDOS.C need to be
  876.    changed.
  877.  
  878.  
  879. 10-January-1991 version 139
  880.  
  881. 0. Changed TVERSION in TECOC.H to 139.
  882. 1. Fixed ZUNIX.C so it handles default EI file names correctly.  Still needs
  883.    ZClnEG to be implemented.
  884. 2. Applied Mark Henderson's patch to ZChIn to fix Control-C handling.
  885. 3. Applied Mark Henderson's patch to ExeEQ to fix EBFEnd pointer screw-up
  886.    when reading a large file with EQ.  Thanks again, Mark!
  887. 4. Applied Ben Masander's patch to ZAMIGA.C to correctly call isatty.
  888. 5. Implemented "SYM" part of :EG command for VAX/VMS,  so TECO-C can set DCL
  889.    symbols like DEC's TECO.
  890.  
  891.  
  892. 20-January-1991 version 140
  893.  
  894. 0. Changed TVERSION in TECOC.H to 140.
  895. 1. Reworked ExeEG and ZClnEG to make it work under Unix and to do the
  896.    system dependent stuff in the right places.
  897. 2. Modified GENCLP to make it create clpars as "unsigned char" instead of
  898.    "signed char" to remove a gcc warning.  Made GENCLP compile/link/run under
  899.    SunOS and modified MAKEFILE.SUN to include processing of GENCLP.
  900. 3. Changed GENCLP.C to define clpars as "const" for ANSI compilers.
  901. 4. Received another ZAMIGA.C from Ben Mesander.  He is now using RCS to
  902.    control revisions,  so there'll be version numbers for ZAMIGA.C from now
  903.    on.  This is version 1.4.
  904. 5. Implemented Mark Henderson's suggestion to make the size of error
  905.    message buffers a #define'd identifier. I named it ERBFSIZ.
  906. 6. Merged in Mark Henderson's video support.  This involved a LOT of
  907.    changes,  including:
  908.     a. Merged MOVE.C into ZUNIX.C
  909.     b. changed VOID to VVOID to avoid clashing with CURSES.H
  910.     c. lots of added code with "#if CURSES" control
  911.     d. created VIDEO.TXT
  912.     e. created an EZ mode control flag for Mark's bits.
  913.     f. added exetil.c
  914.  
  915.  
  916. 23-February-1991 version 141
  917.  
  918. 0. Changed TVERSION in TECOC.H to 141.
  919. 1. Some slight changes to make lint happy.
  920. 2. From Manfred: added DBGFEN calls to DoCtVW and DoCtE in BldStr,  fixed
  921.    DbgFNm in ExeF, removed extra "#include <dos.h>" from ZMSDOS.C, added
  922.    "fclose(fp)" to init_code_checksums in ZMSDOS.C, and some other minor
  923.    fixups in ZMSDOS.C.  Changed MAKEFILE.TC to avoid "Abnormal Program
  924.    Termination".
  925. 3. Added check of terminal width & height to ExeW for 0,1:w error.
  926. 4. Added Mark Henderson's fix to let ZUNIX.C compile under SunOS 4.0.
  927.  
  928.  
  929. 15-March-1991 version 142
  930.  
  931. 0. Changed TVERSION in TECOC.H to 142.
  932. 1. Added Ben's fixes to slight build problems on AmigaDOS.
  933. 2. Fixed makefile.sun to make it handle SunOS 4.1 as well as 4.0.  Still
  934.    needs hand-editing to the makefile before running it.  Defaults to 4.1.
  935. 3. Added some fixes to ZUNIX.C to reduce gcc warnings.
  936. 4. Repaired makefile.sun,  which was broken.
  937. 5. Fixed EXEFTIL.C and EXEF.C so they compile when DEBUGGING is defined.
  938.  
  939.  
  940. 20-April-1991 version 143
  941.  
  942. 0. Changed TVERSION in TECOC.H to 143.
  943. 1. Changed CLPARS.TEC to parse Unix command lines with "-" for options
  944.    instead of "/".
  945. 2. Under Unix, changed ZClnEg to implement last-file-edited memory using
  946.    files in /tmp instead of gawdawful TECF00.TMP files in the current
  947.    directory.
  948. 3. Slight include file #ifdef changes to let it compile under SunOS 4.1.1.
  949. 4. Changed makefile.sun to not use a library.  It's much faster this way.
  950. 5. Added case for tilde command to SkpCmd.c.
  951. 6. Those C files that directly include curses.h needed to have the
  952.    #include moved above zport.h.
  953. 7. Fixed ExeW so if we're not compiled with video,  it returns nothing
  954.    instead of FAILURE,  like TECO32.  Returning FAILURE causes the current
  955.    macro to fail,  and the current macro might be CLPARS!
  956. 8. Fixed ZUNIX.C so ET_UNIXNL is correctly defined.
  957. 9. Added Jerry Leichter's fixes to port to Ultrix,  including makefile.ulx.
  958. 10. Fixed bug in ZUNIX.C where ZDspCh was being called with a string instead
  959.     of a character.  Thanks Jerry!
  960.  
  961.  
  962. 2-June-1991 version 144
  963.  
  964. 0. Changed TVERSION in TECOC.H to 144.
  965. 1. For the ^P command (for debugging,  must compile with DEBUGGING set)
  966.    to work,  each function that starts with a call to DBGFEN needs to have
  967.    a call to DBGFEX before every exit point,  or the pretty nesting gets
  968.    screwed up.  Added some DBGFEX calls to BldStr and ZOClos (in ZUNIX.C)
  969.    to fix the display when 4,0 is used.
  970. 2. Fixed DoFlag, ExeCtR, ExeCtT, ExeW and ExeBSl so they check the expression
  971.    stack correctly.  They can now be used in expressions without problems.
  972.    Thanks to Mark Henderson and Jerry Leichter for reporting this.
  973. 3. Moved the check for "negative argument to comma" from ExeCom to GetAra,
  974.    where it belongs.  This allows -1,5:w commands to work.  Thanks to Jerry
  975.    Leichter.
  976. 4. Instead of "unterminated command",  GetNmA now returns "ill-formed
  977.    expression",  an new error message,  when the stack is bogus.
  978.  
  979.  
  980. 5-June-1991 version 145
  981.  
  982. 0. Changed TVERSION in TECOC.H to 145.
  983. 1. Modified PshMac to test set NumArg correctly,  so a command like
  984.    ^UA1$2+MA=$$ will work.
  985. 2. The "#else" on line 122 of ZUNIX.C should be a "#endif".
  986.  
  987.  
  988. 5-June-1991 to 18-June-1993 version 146
  989.  
  990. 0. Changed TVERSION in TECOC.H to 146.
  991. 1. Removed the ~ and F~ commands (the EXETIL.C file and the ExeFTi function)
  992.    They were temporary commands used by Mark Henderson.
  993. 3. Added makefile.cct, fixed various minor nits suggested by CodeCenter.
  994. 4. Fixed error in the way the EI command reads files.  If the file being
  995.    read was too large for the buffer, memory was getting stomped.  Thanks
  996.    to Mark Henderson for reporting the bug in detail and suggesting a fix.
  997.